/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Servlets;

import Beans.HorarioDoUsuario;
import Beans.Usuario;
import Daos.HorarioDoUsuarioDao;
import Daos.UsuarioDao;
import Validador.ValidaUsuario;
import Validador.ValidadorGenerico;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author wbartko
 */
public class ServletAlterarHorarioLivre extends HttpServlet {


    private String retornadiaSemana(int i) {
        switch (i) {
            case 1:
                return "seg";
            case 2:
                return "ter";
            case 3:
                return "qua";
            case 4:
                return "qui";
            case 5:
                return "sex";
            case 6:
                return "sab";
            case 7:
                return "dom";

        }
        return "seg";
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


        String horarioLivre = null;
        String diaSemana = "seg";




        //pega usuario da sessao
        HttpSession sessão = request.getSession(true);
        Usuario usuario = (Usuario) sessão.getAttribute("usuario");

        //mata sessoes invalidas

        sessão.removeAttribute("erroHorarioLivrePessoa");



        //verifica se tem ao menos um horario selecionado
        int contadoErroHorarioLivre = 0;

        for (int i = 1; i <= 7; i++) {
            diaSemana = retornadiaSemana(i);

            for (int f = 8; f <= 24; f++) {
                String horario = f + diaSemana;
                horarioLivre = request.getParameter(horario);
                System.out.println(horario + ": " + horarioLivre);

                //se o horario livre, estiver selecionado, grava no banco
                if (horarioLivre == null) {
                    contadoErroHorarioLivre++;


                }

            }
        }
        int contadorErro = 0;

        if (contadoErroHorarioLivre >= 119) {
            sessão.setAttribute("erroHorarioLivrePessoa", "Selecione ao menos um horário");
            contadorErro++;
        }







        if (contadorErro > 0) {
            sessão.setAttribute("usuario", usuario);
            response.sendRedirect("formulario_alterarHorario.jsp");
        } else {
            sessão.removeAttribute("erroHorarioLivrePessoa");

            //apaga todos os horarios livres atuais do usuario
            List<HorarioDoUsuario> horariosAntigos = new HorarioDoUsuarioDao().get(usuario);
            for (int i = 0; i < horariosAntigos.size(); i++) {
                new HorarioDoUsuarioDao(horariosAntigos.get(i)).delete();

            }

            //salva dados no banco
       //     new UsuarioDao(usuario).persist();



            for (int i = 1; i <= 7; i++) {
                diaSemana = retornadiaSemana(i);

                for (int f = 8; f <= 24; f++) {
                    String horario = f + diaSemana;
                    horarioLivre = request.getParameter(horario);
                    System.out.println(horario + ": " + horarioLivre);

                    //se o horario livre, estiver selecionado, grava no banco
                    if (horarioLivre != null) {
                        new HorarioDoUsuarioDao(new HorarioDoUsuario(horario, usuario)).persist();
                    }

                }
            }





            //sessao com os nomes de usuario para pagina welcome
//            HttpSession sessao = request.getSession(true);
//            sessao.setAttribute("usuario", usuario);

            //atualiza horario livre de usuario
            sessão.removeAttribute("horariosLivres");
            List<HorarioDoUsuario> horarioDoUsuarios = new ArrayList<HorarioDoUsuario>();
            horarioDoUsuarios = new HorarioDoUsuarioDao().get(usuario);
            sessão.setAttribute("horariosLivres", horarioDoUsuarios);

            response.sendRedirect("sucessoAlterarDados.jsp");




        }



    }
   
}
